/********************************************
 * 功能说明: 
 * 模块名称: 
 * 系统名称: 
 * 软件版权: Frank
 * 系统版本: 1.0.0
 * 开发人员: Frank
 * 开发时间: 2019/12/30 11:23
 * 审核人员: 
 * 相关文档: 
 * 修改记录: 修改日期 修改人员 修改说明
 *********************************************/
package com.spring.arch.uaa.bean;

import com.spring.arch.common.security.UserPrincipal;
import com.spring.arch.common.security.UserPrincipal;
import com.spring.arch.uaa.model.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;

/**
 * 用户客户端信息
 *
 * @author Frank
 * @version 1.0.0.1
 * @since 2019/12/30 11:23
 */
@Accessors(chain = true)
@NoArgsConstructor
@Getter
@Setter
public class UserClientBean implements Serializable {

    private static final long serialVersionUID = 3578185867425173692L;

    @ApiModelProperty("客户端id，租户id或者项目id或者saas管理后台id")
    private UUID clientId;

    @ApiModelProperty("用户凭证信息")
    private UserPrincipal userPrincipal;

    @ApiModelProperty("用户信息")
    private User user;

    @ApiModelProperty("当前所在租户信息")
    private Tenant tenant;

    @ApiModelProperty("当前所在项目信息")
    private Project project;

    @ApiModelProperty(value = "组织信息")
    private Set<Organization> organizations = new HashSet<>();

    @ApiModelProperty(value = "客户端根组织")
    private Organization rootOrganization;

    @ApiModelProperty(value = "人员信息")
    private Set<TenantEmployee> employees = new HashSet<>();

    @ApiModelProperty(value = "人员信息")
    private Set<Authority> authorities = new HashSet<>();

    @ApiModelProperty(value = "角色信息")
    private Set<Role> roles = new HashSet<>();

}
